////////////////////////////////////////////////////////////////////////////
//
// Copyright 2023 Realm Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////

import {useMemo} from 'react';
import {ProviderType} from 'realm';
import {useUser} from '@realm/react';

/**
 * Hook for checking information about an account, such as if the user
 * is using a public/anonymous account or not.
 *
 * @note
 * Can only be used if within the subtree of `@realm/react`'s `UserProvider`.
 */
export function useAccountInfo() {
  const user = useUser();
  const accountInfo = useMemo(
    () => ({
      userId: user.id,
      email: user.profile.email,
      isPublicAccount: user.providerType === ProviderType.AnonUser,
    }),
    [user],
  );

  return accountInfo;
}
